跳到主要内容

Euclidean 算法

阐述​

问题​

给定正整数 a,ba,b,求出 gcd⁡(a,b)\gcd(a,b),并且找到 x,yx,y 使得 ax+by=gcd⁡(a,b)ax+by=\gcd(a,b)。

算法​

r0=ar1=bs0=1s1=0t0=0t1=1⋮⋮ri+1=ri−1−qiri and 0≤ri+1<∣ri∣( this defines qi)si+1=si−1−qisiti+1=ti−1−qiti⋮\begin{aligned} r_{0} &=a & r_{1}=b \\ s_{0} &=1 & s_{1}=0 \\ t_{0} &=0 & t_{1}=1 \\ & \vdots & \vdots \\ r_{i+1} &=r_{i-1}-q_{i} r_{i} & \text { and } 0 \leq r_{i+1}<\left|r_{i}\right| &\left(\text { this defines } q_{i}\right) \\ s_{i+1} &=s_{i-1}-q_{i} s_{i} & & \\ t_{i+1} &=t_{i-1}-q_{i} t_{i} & & \\ & \vdots & & \end{aligned}

当 rk+1=0r_{k+1}=0 时,rkr_k 即为最大公约数,且 rk=ask+btkr_k=as_k+bt_k。

实例​

性质​

相关内容​

参考文献​